package sv.com.action.comun;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import net.sf.json.JSONArray;

import sv.com.modelo.buque.ServicioBuque;
import sv.com.modelo.buque.TipoArtefacto;
import sv.com.modelo.buque.TipoBuqueEmb;
import sv.com.modelo.buque.UnidadPotencia;
import sv.com.modelo.catalogos.Agrupacion;
import sv.com.modelo.catalogos.MaterialCasco;
import sv.com.modelo.catalogos.SubTipoSolicitud;
import sv.com.modelo.catalogos.TipoSolicitud;
import sv.com.modelo.embarcacion.ArtefactoNaval;
import sv.com.modelo.embarcacion.Puerto;
import sv.com.modelo.seguridad.rems.OpcionMenu;
import sv.com.modelo.seguridad.rems.Rol;
import sv.com.modelo.seguridad.rems.Usuario;
import sv.com.objetos.auxiliares.Combo;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.Consulta;
import sv.com.objetos.auxiliares.Listas;

public class ComboAction extends ComunAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public void mapaDeMetodos(){
		String metodo=getOper();
		if(metodo==null) metodo = CONS;
		if(metodo.equals("gerenciaCombo")) cargarGerenciaCombo();
		else if(metodo.equals("opcionesCombo")) cargarComboOpciones();
		else if(metodo.equals("rolesCombo")) cargarComboRoles();
		else if(metodo.equals("usuarioCombo")) cargarComboUsuario();
		else if(metodo.equals("subtipoCombo")) cargarComboSubtipoSolicitud();
		else if(metodo.equals("tipoSolc")) comboTipoSolicitud();
		else if(metodo.equals("subTipoSolc")) comboSubTipoSolicitudNueva();
		else if(metodo.equals("puerto")) cargarPuerto();
		else if(metodo.equals("servicioBuque")) cargarServicioBuque();
		else if(metodo.equals("material")) cargarMaterial();
		else if(metodo.equals("tipoBuque")) cargarTipoBuque();
		else if(metodo.equals("unidadPotencia")) cargarUnidadPotencia();
		else if(metodo.equals("uniPot")) cargarUniPot();
		else if(metodo.equals("tipoEmbarca")) cargarTipoEmbarcacion();
		else if(metodo.equals("agrupa")) cargarComboAgrupaciones();
		else if(metodo.equals("embDepor"))cargarTipoEmbarcacionDep();
		else if(metodo.equals("embTuris"))cargarTipoEmbarcacionTur();
		else if(metodo.equals("tipoArtefacto"))cargarTipoArtefacto();
		
	}

	private void cargarGerenciaCombo() {
//		List<Gerencia> epL=servicioGenerico.cargarTodos(Gerencia.class, "idGerencia", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
//		List<Combo> lCombo = new ArrayList<Combo>();
//		Combo c;
//		for(Gerencia objeto:epL){
//			c= new Combo();
//			c.setLabel(objeto.getNombreGerencia());
//			c.setValue(objeto.getIdGerencia().toString());
//			lCombo.add(c);
//		}
//		JSONArray jao=JSONArray.fromObject(lCombo);
//		enviarJsonNavegador(jao);
	}
	
	public void cargarComboOpciones(){
		List<OpcionMenu> epL=servicioGenerico.cargarTodos(OpcionMenu.class, "idOpcionMenu", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("ninguno");
		c.setValue("0");
		lCombo.add(c);
		for(OpcionMenu objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getDescripcion());
			c.setValue(objeto.getIdOpcionMenu().toString());
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	

	public void cargarComboAgrupaciones(){
		List<Agrupacion> epL=servicioGenerico.cargarTodos(Agrupacion.class, "idAgrupacion", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("ninguno");
		c.setValue("");
		lCombo.add(c);
		for(Agrupacion objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getDescripcionAgrupacion());
			c.setValue(objeto.getIdAgrupacion().toString());
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void comboTipoSolicitud(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "id_tipo_solicitud asc");
		
		
		List<TipoSolicitud> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoSolicitud.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(TipoSolicitud objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombre_tipo_solicitud());
			c.setValue(objeto.getId_tipo_solicitud()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void comboSubTipoSolicitudNueva(){
		
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		String tipoSolc = getServletRequest().getParameter("tipoSolicitud");
		propiedades.add("idTipoSolicitud.id_tipo_solicitud");
		valores.add(tipoSolc);
		tiposConsulta.add(Consulta.IGUAL);
		propiedades.add("accionSubTipoSolicitud");
		valores.add("N");
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idSubTipoSolicitud asc");
		
		List<SubTipoSolicitud> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(SubTipoSolicitud.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(SubTipoSolicitud objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreSubTipoSolicitud());
			c.setValue(objeto.getIdSubTipoSolicitud()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void cargarComboRoles(){
		List<Rol> epL=servicioGenerico.cargarTodos(Rol.class, "idRol", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		for(Rol objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreRol());
			c.setValue(objeto.getIdRol().toString());
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarComboUsuario(){
		List<Usuario> epL=servicioGenerico.cargarTodos(Usuario.class, "idUsuario", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		for(Usuario objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreUsuario());
			c.setValue(objeto.getIdUsuario());
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	
	public void cargarPuerto(){
		List<Puerto> epL=servicioGenerico.cargarTodos(Puerto.class, "idPuerto", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(Puerto objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombrePuerto());
			c.setValue(objeto.getIdPuerto()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarMaterial(){
		List<MaterialCasco> epL=servicioGenerico.cargarTodos(MaterialCasco.class, "idMaterial", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(MaterialCasco objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreMaterial());
			c.setValue(objeto.getIdMaterial()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarServicioBuque(){
		List<ServicioBuque> epL=servicioGenerico.cargarTodos(ServicioBuque.class, "idServicioBuque", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(ServicioBuque objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreServicioBuque());
			c.setValue(objeto.getIdServicioBuque()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarTipoBuque(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		propiedades.add("clasificacion");
		valores.add("B");
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idTipoBuqueEmb desc");
		
		
		List<TipoBuqueEmb> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoBuqueEmb.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(TipoBuqueEmb objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreBuqueEmb());
			c.setValue(objeto.getIdTipoBuqueEmb()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace(); 
		}
	}
	
	
	public void cargarTipoEmbarcacion(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		propiedades.add("clasificacion");
		valores.add("A");
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idTipoBuqueEmb desc");
		
		
		List<TipoBuqueEmb> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoBuqueEmb.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		
		for(TipoBuqueEmb objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreBuqueEmb());
			c.setValue(objeto.getIdTipoBuqueEmb()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace(); 
		}
	}
	
	
	public void cargarTipoEmbarcacionDep(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		propiedades.add("clasificacion");
		valores.add("D");
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idTipoBuqueEmb desc");
		
		
		List<TipoBuqueEmb> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoBuqueEmb.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		
		for(TipoBuqueEmb objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreBuqueEmb());
			c.setValue(objeto.getIdTipoBuqueEmb()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace(); 
		}
	}
	
	public void cargarTipoEmbarcacionTur(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		propiedades.add("clasificacion");
		valores.add("T");
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idTipoBuqueEmb desc");
		
		
		List<TipoBuqueEmb> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoBuqueEmb.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		
		for(TipoBuqueEmb objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreBuqueEmb());
			c.setValue(objeto.getIdTipoBuqueEmb()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace(); 
		}
	}
	
	public void cargarComboSubtipoSolicitud(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "id_tipo_solicitud desc");
		
		
		List<TipoSolicitud> epL;
		try {
			epL = servicioGenerico.cargarTodosV2(TipoSolicitud.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		for(TipoSolicitud objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombre_tipo_solicitud());
			c.setValue(objeto.getId_tipo_solicitud()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace(); 
		}
	}
		
	public void cargarUnidadPotencia(){
		List<UnidadPotencia> epL=servicioGenerico.cargarTodos(UnidadPotencia.class, "idUnidadPotencia", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		//c.setLabel("Seleccione");
		//c.setValue("");
		//lCombo.add(c);
		for(UnidadPotencia objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreUnidadPotencia());
			c.setValue(objeto.getIdUnidadPotencia().toString());
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarUniPot(){
		List<UnidadPotencia> epL=servicioGenerico.cargarTodos(UnidadPotencia.class, "idUnidadPotencia", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
//		c.setLabel("Seleccione");
//		c.setValue("");
//		lCombo.add(c);
		for(UnidadPotencia objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreUnidadPotencia());
			c.setValue(objeto.getIdUnidadPotencia()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
	public void cargarTipoArtefacto(){
		List<TipoArtefacto> epL=servicioGenerico.cargarTodos(TipoArtefacto.class, "idTipoArtefacto", "asc", Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
		List<Combo> lCombo = new ArrayList<Combo>();
		Combo c;
		c= new Combo();
		c.setLabel("Seleccione");
		c.setValue("");
		lCombo.add(c);
		for(TipoArtefacto objeto:epL){
			c= new Combo();
			c.setLabel(objeto.getNombreArtefacto());
			c.setValue(objeto.getIdTipoArtefacto()+"");
			lCombo.add(c);
		}
		JSONArray jao=JSONArray.fromObject(lCombo);
		enviarJsonNavegador(jao);
	}
	
}
